package javaDemo.demo.day_04_01_ThreadSafeList;

import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @Description 线程安全的 Map
 * @Author
 * @Date 2020/11/1 11:03
 * @Version 1.0
 */
public class ThreadSafeMap {

    public static void main(String[] args) {

        //【常用的线程安全的 HashMap 集合】
        ConcurrentHashMap<Object, Object> concurrentHashMap = new ConcurrentHashMap<>();

        new HashMap<>();
        /**
         *【复习回顾 ArrayList、HashMap】
         * 1、ArrayList 底层是数组，初始长度为 10，负载因子为 1，满载时扩容为原来长度的 1.5 倍
         * 2、HashMap（粗略版）
         *  2.1、HashMap 底层是 Node 类型的 数组+链表+红黑树
         *  2.2、初始长度为 16，负载因子为 0.75，扩容为原来的 两倍
         *  2.3、HashMap 的 put 流程：
         *      1）、根据 key 计算 hash 值
         *      2）、根据 hash 定位存放的数组索引位置上，有无内容，没有内容则直接放上去
         *      3）、有内容，则判断 key 值是否相同，key 值相同则覆盖 value 值
         *      4）、有内容，且 key 值不相同，那么新 put 进来的 Node 占据数组索引位置，
         *           其他原有的 Node 元素，以单向链表的形式，连接在新 put 进来的 Node 节点后面
         *      5）、当单向链表的长度达到 8 之后，将单向链表转换成 红黑树
         *【PS：集合相关的面试题、Linux相关的面试题、数据库相关的面试题，都需要好好复习准备】
         */

    }
}
